from django.shortcuts import render,reverse
from django.http import HttpResponse,JsonResponse
from .. import models

# Create your views here.

#重新定义到页面变量
def selectAllTypes():
    data=models.Booktype.objects.extra(select={'paths':'concat(path,id)'}).order_by('paths')

    for x in data:
        num=x.path.count(',')-1
        x.sb='|----'*num


        if x.pid!= 0:
            x.pname=models.Booktype.objects.get(id=x.pid).name

    return data

#后台图书分类
def index(request):
    #获取所有的图书分类
    data=selectAllTypes()

    context={'data':selectAllTypes()}

    return render(request,'myadmin/types/index.html',context)


#图书分类 添加
def add(request):
    # 获取所有的图书分类
    data = selectAllTypes()
    context = {'data': selectAllTypes()}

    return render(request,'myadmin/types/add.html',context)


#图书分类 执行添加
def insert(request):
    data=request.POST.dict()
    data.pop('csrfmiddlewaretoken')

    #判断当前添加的分类是否为顶级分类
    if data['pid']== '0':
        #顶级分类
        data['path'] = '0,'
    else:
        #查询当前选择的父类的path
        path=models.Booktype.objects.get(id=data['pid']).path
        #当前选择的父类的path+当前父类的id+','
        data['path']=path+data['pid']+','



    try:
        #执行数据的添加
        obj=models.Booktype(**data)
        obj.save()
        url = reverse('myadmin_types_index')
        return HttpResponse(f'<script>alert("图书分类添加成功");location.href="{url}"</script>')

    except:
        url = reverse('myadmin_types_add')
        return HttpResponse(f'<script>alert("图书分类添加失败");location.href="{url}"</script>')


#图书分类 删除
def delete(request):
    #获取分类id
    id=request.GET.get('id')


    #判断当前类下是否还有子类
    num=models.Booktype.objects.filter(pid=id).count()
    if num:
        #不能删除
        return JsonResponse({'code':1,'msg':'当前分类还有字类，不能删除'})


    #判断当前类型是否还有商品
    # if goodsnum:
    #     # 不能删除
    #     return JsonResponse({'code': 1, 'msg': '当前分类还有书籍发布，不能删除'})

    try:
        # 获取当前的分类对象
        obj=models.Booktype.objects.get(id=id)
        obj.delete()
        return JsonResponse({'code': 0, 'msg': '删除成功'})
    except:
        return JsonResponse({'code': 3, 'msg': '删除失败'})


#图书分类 修改
def edit(request):
    try:
        id=request.GET.get('id')
        name=request.GET.get('name')

        obj=models.Booktype.objects.get(id=id)
        obj.name=name
        obj.save()
        return JsonResponse({'code': 0, 'msg': '更新成功'})
    except:
        return JsonResponse({'code': 1, 'msg': '更新失败'})




